package susebs.pb.travel_server.utils.DataInit;

import com.fasterxml.jackson.databind.JsonNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import susebs.pb.travel_server.dao.HotelsDao;
import susebs.pb.travel_server.dao.LandmarksDao;
import susebs.pb.travel_server.entity.Hotels;
import susebs.pb.travel_server.entity.Landmarks;

import java.util.Iterator;

/**
 * 景点信息初始化，用于填充景点数据库
 */
@Component
public class LandmarksData {

    private static LandmarksDao dao;

//    初始化dao
    @Autowired
    public void setDao(LandmarksDao dao){
        LandmarksData.dao = dao;
    }

    /**
     *
     * @param addr 检索到的数据
     */
    public static void LandmarksDataInit(JsonNode addr){
        Landmarks lm;
        Iterator<JsonNode> elements = addr.get("results").elements();
        JsonNode node;

        while(elements.hasNext()){
            node = elements.next();
            lm = new Landmarks();

            lm.setLmName(node.get("name").asText());
            lm.setLmPrice("78元起");
            lm.setLmDescription("在自然与人文交织的秀丽景区内，群山巍峨苍翠，层峦叠嶂间流淌着清澈灵动的溪流。古树参天，掩映着历史悠久的古建筑群，独特而庄重。漫步青石板路，穿越千年古道，沿途花香鸟语，使人沉醉于宁静和谐的大自然怀抱。登高远眺，湖光山色尽收眼底，如诗如画的景色让人心生向往，流连忘返，仿佛时间在这里凝固成永恒的美好记忆。");
            lm.setTicketsDescription("门票\n" +
                    "成人票 228 人民币\n" +
                    "优惠票 78 人民币\n" +
                    "免票：\n" +
                    "1、1.2米及以下儿童（须有成人购票陪同入园）； 2、65岁及以上老人持本人身份证原件(建议成人购票陪同入园)； 3、现役军人（本人持本人军官证，含退出现役的残疾军人、军队离休、退休干部），需持本人军官证原件； 4、持本人有效证件原件的消防救援人员； 5、持本人《人民警察证》原件的全国人民警察； 6、持国家新闻出版总署颁发的记者证原件的记者； 7、持中国摄影家协会会员证原件的摄影师； 8、持本人导游证原件和行程单且带3人以上团队的导游。\n");
            lm.setOtherInfo("暂无");
            lm.setLmLng(node.get("location").get("lng").asDouble());
            lm.setLmLat(node.get("location").get("lat").asDouble());
            lm.setLmAddr(node.get("address").asText());
            lm.setProvince(node.get("province").asText());
            lm.setCity(node.get("city").asText());
            lm.setArea(node.get("area").asText());

//            可能出现空值属性的处理
            String telephone = node.get("telephone") != null ? node.get("telephone").asText() : "未知电话";
            String label = node.get("detail_info").get("label") != null
                    ? node.get("detail_info").get("label").asText() : "暂未定级";
            String shopHours = node.get("detail_info").get("shop_hours") != null
                    ? node.get("detail_info").get("shop_hours").asText() : "暂未公示，详情请致电";
            Double overallRating = node.get("detail_info").get("overall_rating") != null
                    ? node.get("detail_info").get("overall_rating").asDouble() : 0.00;

            lm.setLmTelephone(telephone);
            lm.setLmLabel(label);
            lm.setShopHours(shopHours);
            lm.setOverallRating(overallRating);

            if(dao != null){
                dao.insert(lm);
            }else{
                System.out.println("dao为空");
            }
        }
    }

}
